Voorbeelden van concat-functies
De functie CONCAT() mag niet worden verward met het scripttrefwoord CONCATENATE.
In zijn meest simpele vorm wordt Concat() gebruikt voor het samenvoegen van waarden/woorden/selecties tot één tekenreeks. Het kan echter op een aantal manieren worden gebruikt om u te helpen bij het oplossen van verschillende problemen. Alle voorbeelden zijn gebaseerd op de volgende tabel:
Table | MyColumn | Date | Value |
---|---|---|---|
Data | JKL | 01/01/2012 | 11 |
Data1 | WVX | 01/02/2012 | 13 |
Data | GHI | 01/03/2012 | 13 |
Data | ABC | 01/04/2012 | 15 |
Data1 | STU | 01/05/2012 | 18 |
Data1 | PQR | 01/06/2012 | 10 |
Data1 | MNO | 01/07/2012 | 25 |
Data | DEF | 01/08/2012 | 11 |
Eenvoudige samenvoeging van tekenreeksen
Zoals eerder aangegeven, kunt u met de concat-functie een lijst met waarden aan elkaar voegen. Deze waarden kunnen hard zijn gecodeerd of het resultaat van selecties/gegevens.
=CONCAT(MyColumn,',')
=CONCAT(DISTINCT MyColumn,',')
Met deze eenvoudige concat-opdracht worden alle mogelijke waarden uit de kolom MijnKolom aan elkaar gevoegd. Wellicht wilt u het trefwoord DISTINCT toevoegen. Dit zorgt ervoor dat elke waarde slechts eenmaal wordt weergegeven in de tekenreeks:
ABC,DEF,GHI,JKL,MNO,PQR,STU,VWX
Bij gebruik van een simpele concat-opdracht hebt u de mogelijkheid om een sorteergewicht toe te voegen aan de functie om de tekenreekswaarden te rangschikken op een kolom van uw keuze. In het onderstaande voorbeeld wordt de datumkolom toegevoegd voor het sorteren van de waarden.
=CONCAT(MyColumn, ',', Date)
Resultaat: JKL,VWX,GHI,ABC,STU,PQR,MNO,DEF
Concat() binnen een uitdrukking/Set-opdracht
Voorbeeld: Meerdere dynamische waarden doorgeven aan een uitdrukking voor set-analyse
Er kunnen zich situaties voordoen waarbij u een dynamische selectie van waarden wilt doorgeven aan een set-opdracht. Om dit te kunnen doen, moet u enkele aanhalingstekens toevoegen aan de tekenreeks zodat de functie CONCAT() bijvoorbeeld 'JKL','VWX' retourneert. Maar u kunt de enkele aanhalingstekens niet toevoegen zoals ze zijn, omdat deze dan zouden worden geïnterpreteerd bij de evaluatie van Concat in plaats van bij de evaluatie van de set-uitdrukking. Gebruik derhalve de functie Chr():
=CONCAT(Chr(39)&MyColumn&Chr(39),',')
U kunt deze concat-opdracht dan doorgeven aan de binnenkant van een uitdrukking
=Sum({<MyColumn={$(=CONCAT(Chr(39)&MyColumn&Chr(39),','))}>} Value)
In de meeste gevallen zou deze techniek worden gebruikt bij de aanwezigheid van gegevenseilanden. U kunt hiermee waarden doorgeven aan een uitdrukking die niet van invloed zijn op enig deel van het gegevensmodel aangezien de tabel van het gegevenseiland er niet mee is verbonden.
Concat() in het script
Concat kan tevens worden gebruikt in het script voor het converteren van meerdere rijen naar een enkele kolomwaarde, net als bij elke andere aggregatie.
Uitgaande van de eerder gebruikte brongegevens, levert CONCAT het volgende resultaat op aan de scriptzijde:
Hieronder volgt het resultaat van deze scriptfunctie:
Table | CombinedData |
---|---|
Data | ABC,DEF,GHI,JKL |
Data1 | MNO,PQR,STU,WVX |
Rank() gebruiken om Concat() te beïnvloeden
Als u begint met het gebruiken van andere functies in combinatie met concat(), kunt u beginnen met het ontvangen van slimme resultaten. In dit voorbeeld is Rank() gebruikt voor het ophalen van de drie beste presteerders (gebaseerd op Waarde) en het samenvoegen hiervan.
=CONCAT(IF(aggr(Rank(sum(Value)),MyColumn)<=3,MyColumn),',')
Resultaat: ABC,MNO,STU